package view;

import java.util.List;

import javax.servlet.http.HttpServletRequest;

import org.apache.struts2.ServletActionContext;

import model.KlsCliente;
import model.KlsConductor;
import model.KlsDocumentoTransporte;
import model.KlsDocumentoTransportePedido;
import model.KlsReporte;
import model.KlsUnidadTransporte;
import model.KlsVehiculo;

import com.opensymphony.xwork2.ActionSupport;


import controller.KlsClienteManager;
import controller.KlsConductorManager;
import controller.KlsDocumentoDeTransporteManager;
import controller.KlsReporteManager;
import controller.KlsUnidadTransporteManager;
import controller.KlsVehiculoManager;

public class ReporteAction extends ActionSupport {
	
	private List<KlsReporte> reporteList;
	
	private List<KlsCliente> clienteList;
	private List<KlsVehiculo> vehiculoList;
	private List<KlsConductor> conductorList;
	private List<KlsUnidadTransporte> unidadTransporteList;
	private List<KlsDocumentoTransporte> docTransporteList;
	
	
	
	private String archivoReporte;
	private String storeProcedure;
	
	
	private int idCliente;
	private int idVehiculo;
	private int idConductor;
	private int idUnidadTransporte;
	private int idDocumentoTransporte;
	
	private String fechaIni;
	private String fechaFin;

	private int idReporte;
	

	
	






	////////////////////////////////////////////////////////////////////////////////////////
	//EXECUTE
	////////////////////////////////////////////////////////////////////////////////////////	
	@Override
	public String execute() {  

		 cargarListas();
		
		
		KlsReporteManager reporteManager = new KlsReporteManager();
		setReporteList(reporteManager.list());
		
		archivoReporte="vacio";
 
        return SUCCESS;  
    }



	
	
	////////////////////////////////////////////////////////////////////////////////////////
	//GENERAR REPORTE
	////////////////////////////////////////////////////////////////////////////////////////	
	public String generarReporte() {  
		
		
		KlsReporteManager reporteManager = new KlsReporteManager();
		setReporteList(reporteManager.list());

		
		
		
		//leo varibles de sesion 
		HttpServletRequest request = ServletActionContext.getRequest();
		idReporte = Integer.parseInt(request.getParameter("reporte").toString());
		idCliente = Integer.parseInt( request.getParameter("cliente").toString());
		idVehiculo= Integer.parseInt( request.getParameter("vehiculo").toString());
		idConductor = Integer.parseInt( request.getParameter("conductor").toString());
		idUnidadTransporte = Integer.parseInt( request.getParameter("unidadTransporte").toString());
		idDocumentoTransporte = Integer.parseInt( request.getParameter("docTransporte").toString());
		
		this.fechaIni = request.getParameter("fechaIni").toString();
		this.fechaFin = request.getParameter("fechaFin").toString();
		
		KlsReporte klsReporte = reporteManager.load(idReporte);
		storeProcedure = klsReporte.getStoreProcedure();
		archivoReporte = klsReporte.getRutaArchivo();
		
		
		reporteManager.generarReporte(storeProcedure,  idCliente, 
				 idVehiculo,  idConductor,  idUnidadTransporte,  idDocumentoTransporte, fechaIni, fechaFin);
		
		
		this.cargarListas();
		
        return SUCCESS;  
    }
	
	
	
	
	private void cargarListas() {
		
		
		KlsClienteManager klsclienteManager = new  KlsClienteManager();
		
		KlsVehiculoManager klsVehiculoManager = new  KlsVehiculoManager();
		
		KlsConductorManager klsConductorManager = new  KlsConductorManager();
		
		
		KlsDocumentoDeTransporteManager klsDocumentoDeTransporteManager = new KlsDocumentoDeTransporteManager();
		
		
		clienteList = klsclienteManager.list();
		
		vehiculoList = klsVehiculoManager.list();
		
		conductorList = klsConductorManager.list();
				
		unidadTransporteList = KlsUnidadTransporteManager.list();
		
		docTransporteList = klsDocumentoDeTransporteManager.list();

	}


	public List<KlsReporte> getReporteList() {
		return reporteList;
	}


	public void setReporteList(List<KlsReporte> reporteList) {
		this.reporteList = reporteList;
	}


	public String getArchivoReporte() {
		return archivoReporte;
	}


	public void setArchivoReporte(String archivoReporte) {
		this.archivoReporte = archivoReporte;
	}

	public String getStoreProcedure() {
		return storeProcedure;
	}

	public void setStoreProcedure(String storeProcedure) {
		this.storeProcedure = storeProcedure;
	}





	public List<KlsCliente> getClienteList() {
		return clienteList;
	}





	public void setClienteList(List<KlsCliente> clienteList) {
		this.clienteList = clienteList;
	}





	public List<KlsVehiculo> getVehiculoList() {
		return vehiculoList;
	}





	public void setVehiculoList(List<KlsVehiculo> vehiculoList) {
		this.vehiculoList = vehiculoList;
	}





	public List<KlsConductor> getConductorList() {
		return conductorList;
	}





	public void setConductorList(List<KlsConductor> conductorList) {
		this.conductorList = conductorList;
	}





	public List<KlsUnidadTransporte> getUnidadTransporteList() {
		return unidadTransporteList;
	}





	public void setUnidadTransporteList(
			List<KlsUnidadTransporte> unidadTransporteList) {
		this.unidadTransporteList = unidadTransporteList;
	}





	public List<KlsDocumentoTransporte> getDocTransporteList() {
		return docTransporteList;
	}





	public void setDocTransporteList(List<KlsDocumentoTransporte> docTransporteList) {
		this.docTransporteList = docTransporteList;
	}





	public int getIdCliente() {
		return idCliente;
	}





	public void setIdCliente(int idCliente) {
		this.idCliente = idCliente;
	}





	public int getIdVehiculo() {
		return idVehiculo;
	}





	public void setIdVehiculo(int idVehiculo) {
		this.idVehiculo = idVehiculo;
	}





	public int getIdConductor() {
		return idConductor;
	}





	public void setIdConductor(int idConductor) {
		this.idConductor = idConductor;
	}





	public int getIdUnidadTransporte() {
		return idUnidadTransporte;
	}





	public void setIdUnidadTransporte(int idUnidadTransporte) {
		this.idUnidadTransporte = idUnidadTransporte;
	}





	public int getIdDocumentoTransporte() {
		return idDocumentoTransporte;
	}





	public void setIdDocumentoTransporte(int idDocumentoTransporte) {
		this.idDocumentoTransporte = idDocumentoTransporte;
	}
	
	
	public int getIdReporte() {
		return idReporte;
	}





	public void setIdReporte(int idReporte) {
		this.idReporte = idReporte;
	}





	public String getFechaIni() {
		return fechaIni;
	}





	public void setFechaIni(String fechaIni) {
		this.fechaIni = fechaIni;
	}





	public String getFechaFin() {
		return fechaFin;
	}





	public void setFechaFin(String fechaFin) {
		this.fechaFin = fechaFin;
	}

	
}
